[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
Posted
by gnomixa
on Stack Overflow
See other posts from Stack Overflow
or by gnomixa
Published on 2010-05-17T17:06:28Z
Indexed on
2010/05/17
17:10 UTC
Read the original article
Hit count: 1142
In ASP.net web service if the above isn't specified , what is the response format by default? Also, if my web service below:
[WebMethod()]
public List<Sample> GenerateSamples(string[][] data)
{
ResultsFactory f = new ResultsFactory(data);
List<Sample> samples = f.GenerateSamples();
return samples;
}
returns the list of objects, If I change the response format to JSON, I have to change the return type to string, then how do I access objects in my javascript?
Currently I call this web service in my JS such as:
$.ajax({
type: "POST",
url: "http://localhost/TemplateWebService/Service.asmx/GenerateSamples",
data: jsonText,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(response) {
var samples = (typeof response.d) == 'string' ? eval('(' + response.d + ')') : response.d;
if (samples.length > 0) {
doSomethingHere(samples);
} else {
alert("No samples have been generated");
}
},
error: function(xhr, status, error) {
var msg = JSON.parse(xhr.responseText);
alert(msg.Message);
}
});
What i noticed though, even though everything works perfectly fine, the eval statement never gets executed, which means that the web service always returns a string!
So my question is, is [ScriptMethod(ResponseFormat = ResponseFormat.Json)] necessary on the web service definition side?
The way things are now, I can use samples array and access each object and its properties as I normally would in any OOP code, which is very convenient, and everything works no problem, but I just wanted to make sure that I am not missing anything in my set up.
I took the basics of combining Jquery's ajax with asp.net from Encosia side, and the response type wasn't mentioned there - I read it on another site and am I not sure how vital it is.
© Stack Overflow or respective owner